package com.mobilezu.mobile.android.mobile4s.util;

import java.io.IOException;

import android.content.Context;
import android.content.res.AssetManager;

public class AssetManagerUtil {
	private static FileUtil fileUtil ;
	private static String sdCardPath;
	
	/**
	 * 拷贝资源文件
	 */
	public static boolean copyAsset(Context context){
		boolean result=false;
		fileUtil= new FileUtil(context);
		sdCardPath=android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
		try {
			if(context!=null){
				AssetManager am=context.getAssets();
				//获取所有文件，包括AndroidManifest.xml
				//String[] files=am.list("/");
				//获取web目录下的文件夹
				String[] files=am.list("web");
				for (int i = 0; files!=null&&i < files.length; i++) {
					String fileName=files[i];
					//拷贝文件
					copy(am,"web/"+fileName);
				}
				result=true;
			}
		} catch (Exception e) {
			result=false;
			CommonHelper.log(AssetManagerUtil.class.getName(),"copyAsset："+e.getMessage());
		}
		return result;
	}
	
	/**
	 * 拷贝方法
	 * @param file 文件对象
	 * @throws IOException 文件不存在时会引发此异常
	 */
	private static void copy(AssetManager am,String path) throws IOException{
			//判断文件是否为目录，如果为目录，需要递归去访问
			if(am.list(path)!=null&&am.list(path).length!=0){
				//说明此为文件夹
				String[] listFiles=am.list(path);
				for (int i = 0; listFiles!=null&&i < listFiles.length; i++) {
					copy(am,path+"/"+listFiles[i]);
				}
			}else{
				String fileName=path.substring(path.lastIndexOf("/")+1);
				String destPath=sdCardPath+"/sms/"+path.substring(0,path.lastIndexOf("/"));
				//直接拷贝
				fileUtil.copyFileFromAsset(path, destPath, fileName);
			}
	}
}
